$(document).ready(function(){
    initMask();
    initEnviar();
    initGrid();
    iniBusca();
    initControlaAtivi();
    validaRemocao();
});

function initControlaAtivi(){
    $(".checkAtiv").live("change",function(){
        var checkbox =$(this);
        if(checkbox.is(':checked')){
            checkbox.closest("tr").find('.valores').attr("disabled",false);
            checkbox.closest("tr").find('.codigo_plano').attr("disabled",false);
        }else{
            checkbox.closest("tr").find('.valores').attr("disabled",true);
            checkbox.closest("tr").find('.codigo_plano').attr("disabled",true);
        }
    });
}

function initMask(){
    $("input[alt]").setMask();
}

function initGrid(){
    $("#flex1").flexigrid({
        url: '/planoSaude/consulta/lista',
        dataType: 'xml',
        colModel : [
        {
            display: 'Id', 
            name : 'codigo', 
            width : 80, 
            sortable : true, 
            align: 'center'
        },

        {
            display: 'Descrição', 
            name : 'descricao', 
            width : 250, 
            sortable : true, 
            align: 'left'
        },

        {
            display: 'Data Cadastro', 
            name : 'dt_cadastro', 
            width : 180, 
            sortable : true, 
            align: 'center'
        }
        ],
        buttons : [
        {
            name: 'Add', 
            bclass: 'add', 
            onpress : adicionar
        },

        {
            name: 'Edit', 
            bclass: 'add', 
            onpress : edita
        },

        {
            separator: true
        }
        ],
        searchitems : [
        {
            display: 'Id', 
            name : 'codigo'
        },

        {
            display: 'Descrição', 
            name : 'descricao', 
            isdefault: true
        }
        ],
        sortname: "codigo",
        sortorder: "asc",
        usepager: true,
        title: 'Plano de Saúde',
        useRp: true,
        rp: 15,
        showTableToggleBtn: true,
        width: 600,
        height: 200
    }); 
}

function initEnviar(){
    $("#btnEnviar").live("click",function(event){
        event.preventDefault();
        removeMsgErro('initEnviar');
        
        if(validaForm()){
            $.ajax({
                url: '/planoSaude/insere/valida',
                data: dataSend(),
                dataType: 'Json',
                type: 'POST',
                contentType: "application/x-www-form-urlencoded;charset=UTF-8",
                beforeSend: function(){
                },
                success: function(data){
                    if(!isEmpty(data.erros)){
                        for (i = 0; i < data.erros.length; i++) {
                            exibeMsgErro(data.erros[i], 'initEnviar');
                        }
                    }else{
                        $("#pesquisa_conteudo_form").submit();
                    }
                },
                error: function(){
                }
            });
        }
    });
}

function dataSend(){
    return $("#pesquisa_conteudo_form input,#pesquisa_conteudo_form select").serialize();
}

function validaRemocao(){
    $('#btnExcluir').live('click',function(){
        var answer = confirm("Tem certeza que deseja excluir?");
        if (answer){
            removeMsgErro('validaExclusao');
            $.ajax({
                url: '/planoSaude/insere/valida-remocao',
                data: $('#codigo').serialize(),
                dataType: 'Json',
                type: 'POST',
                contentType: "application/x-www-form-urlencoded;charset=UTF-8",
                beforeSend: function(){
                },
                success: function(data){
                    if(!isEmpty(data.erros)){
                        for (i = 0; i < data.erros.length; i++) {
                            exibeMsgErro(data.erros[i], 'validaExclusao');
                        }
                    }else{
                        removePlanoSaude();
                    }
                },
                error: function(){
                }
            });
        }
    });
}

function removePlanoSaude(){
    removeMsgErro('exclui1');
    var busca = $("#codigo").val();

    if(isEmpty(busca)){
        exibeMsgErro('É necessário selecionar um registro para ser removido.', 'exclui1');
    }else{
        window.location = '/planoSaude/insere/delete?codigo=' + busca;
    }
    
}

function edita(){
    removeMsgErro('edita1');
    var busca = $(".trSelected td[abbr='codigo'] div");

    if(busca.length == 0){
        exibeMsgErro('É necessário selecionar um registro para editar.', 'edita1');
    }else if(busca.length > 1){
        exibeMsgErro('É necessário somente um registro para editar.', 'edita1');
    }else if(isNaN(busca.html() * 1)){
        exibeMsgErro('Não é possível editar esse registro.', 'edita1');
    }else{
        window.location = '/planoSaude/edita?codigo=' + busca.html();
    }
}


function validaForm(){
    removeMsgErro(new Array("validaForm1","validaForm2","validaForm3"));
    var erros = new Array();
    if(isEmpty($("#descricao").val())){
        erros['validaForm1'] = "É necessário preencher o campo 'Nome da Plano de Saúde'";
    }
    
    $(".table .valores").not(':disabled').each(function(){
        var ele = $(this);
        var valor = $(ele).closest("tr").find(".tdCodPlano input").val();
        if(isEmpty(valor)){
            var ativ = $(ele).closest("tr").find(".desc").html();
            erros['validaForm2'] = 'É necessário preencher o Código no Plano de Saúde da atividade: ' + ativ; 
        }
    });
    
    if(size(erros) > 0){
        exibeMsgErro(erros);
        return false;
    }
    
    return true;
}

function adicionar(){
    window.location = '/planoSaude/insere';
}


function iniBusca(){
    $('#btnConsulta').live('click',function(event){
        event.preventDefault();
        var erros = new Array();
        var dtEx = $('#dt_expiracao').val();
        var deCad = $('#dt_cadastro').val();
        
        if(!isEmpty(dtEx) && !dateIsValid(dtEx)){
            erros['iniBUsca'] = 'Data de Expiração não é válida.'; 
        }
        
        if(!isEmpty(deCad) && !dateIsValid(deCad)){
            erros['iniBUsca'] = 'Data de Expiração não é válida.'; 
        }
        
        if(erros.length > 0){
            exibeMsgErro(erros, null);
        }else{
            var dt = $('#pesquisa_conteudo_form input').serializeArray();
            $("#flex1").flexOptions({
                params: dt
            }).flexReload();
        }
        
    });
}